<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8"/>
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <title>Document</title>
</head>
<body>
  
</body>
</html>
<script>
  // 这个API 没办法兼容ＩＥ8 ;
  var obj = {};
  // Object.defineProperty(obj,'name',{
  //   value:'珠峰',
  //   enumerable:false,// 是否可枚举
  //   writable:false,// 该属性是否可改
  //   configurable:true // 是都可删除  delete
  // });
  let t = '珠峰'
  Object.defineProperty(obj,'name',{
    // 只要是调用了 obj的name属性 那么 就会触发get函数，调用时获得的结构 就是get函数的返回值
    // 只要外界给 obj的name赋值  那么 就会触发 set函数 形参val对应的就是 设置的那个值
    get(){
      console.log('触发了get函数')
      return t
    },
    set(val){
      console.log('触发了set，val是'+val)
      t = val;
      // obj.name = val
    }
  });

  // Proxy 
  var  obj2 = {
    name:"123",
    age:345,
    sex:666
  }
  var obj3 = new Proxy(obj2,{
    get(target,key){
      // console.log(arguments)
      console.log('触发了get函数')
      return target[key]
    },
    set(target,key,value){
      console.log('触发了set，val是'+value)
      target[key] = value;
    }
  });



</script>